/*
 * JDialogDistribuirComponentes.java
 *
 * Created on 26-sep-2011, 22:17:11
 */
package com.ufps.cuatro.vistas.representacion;

import java.awt.GridBagConstraints;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.table.TableColumn;
import javax.swing.text.Position.Bias;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

import org.jdesktop.application.Action;

import com.ufps.cuatro.CuatroApp;
import com.ufps.cuatro.controlador.listener.ControllerListenerPopupJTree;
import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.analizador.ObjetoReflexion;
import com.ufps.cuatro.modelo.asistente.UtilAsistente;
import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.modelo.representacion.PlantillaCombo;
import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorEspejo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorLibre;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorClaseCompleja;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorEnum;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoGetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoSetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorString;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorUnitario;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorVinculador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorMetodo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorSimple;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGeneradoInterno;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGeneradoSimple;
import com.ufps.cuatro.util.Bandera;
import com.ufps.cuatro.util.InformacionNodo;
import com.ufps.cuatro.util.TipoCaso;
import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.dnd.ControlarTablaDistribucion;
import com.ufps.cuatro.util.editor.ColumnCellEditorDistribucionGridBagConstraintsColumnValue;
import com.ufps.cuatro.util.generadores.GeneradorArbol;
import com.ufps.cuatro.util.generadores.GeneradorComponentes;
import com.ufps.cuatro.util.model.MyTableModelProperties;
import com.ufps.cuatro.util.render.ColumnCellRendererDistribucionGridBagConstraintsColumnValues;
import com.ufps.cuatro.util.render.MyListRendererJLabel;
import com.ufps.cuatro.util.render.MyTreeCellRender;
import com.ufps.cuatro.vistas.JDialogCrearComponenteManual;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class JDialogDistribuirComponentes extends javax.swing.JDialog implements Observer {
    private static final long serialVersionUID = 8763615209387559971L;
    
    private Object objParent;
    private Componente objComponenteParent;
    private Componente objComponenteSeleccionado;
    private ComponenteDistribuidor objComponenteDistribuidorParent;    
    private ComponenteDistribuidorContenedorEspejo objComponenteParentAsistenteEspejo;
    private ComponenteDistribuidorContenedorLibre objComponenteParentAsistenteLibre;
    private ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo;
    private ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple;
    private ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra;    
    private ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase;
    private ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter;
    private ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter;
    private ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario;    
    private ComponenteDistribuidorGeneradorString objComponenteGeneradorString;    
    private ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum;
    private ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador;
    private ComponenteDistribuidorExtra objComponenteExtra;
    
    private GridBagConstraints objGridBagConstraintsSeleccionada;
    
    private int idPlantilla;    
    private PlantillaCombo objPlantillaCombo;
    private ObjetoTipoDatoReflexion objTipoDato;
    private ObjetoReflexion objReflexion;
    
    private Object objSeleccionado;
    
    private InformacionNodo objNodoSeleccionado;
    private InformacionNodo objNodoAnteriorSeleccionado;    
    private int seleccion;     
    private boolean incluirComponenteParent;
    
    private ControlarTablaDistribucion objControllerTable;
    

    /** Creates new form JDialogDistribuirComponentes */
    public JDialogDistribuirComponentes(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setIconImage(Utileria.leerIconoAppEnImagen(Utileria.MODO_16x16).getImage());        
    }

    /** Creates new form JDialogDistribuirComponentes */
    public JDialogDistribuirComponentes(final Object objParent, Componente objComponenteParent) {
        super(CuatroApp.getApplication().getMainFrame(), true);
        initComponents();
        this.setIconImage(Utileria.leerIconoAppEnImagen(Utileria.MODO_16x16).getImage());
        this.objParent = objParent;
        this.objComponenteParent = objComponenteParent;
        this.objComponenteDistribuidorParent = (ComponenteDistribuidor) this.objComponenteParent;
        this.objPlantillaCombo = new PlantillaCombo();
        this.objComponenteParent.setFinish(false);
        
        agregarWindowListener(objParent);
        this.inicializarControles();
        this.objNodoSeleccionado = null;
        this.objNodoAnteriorSeleccionado = this.objNodoSeleccionado;                
    }

    private void agregarWindowListener(final Object objParent) {
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                super.windowOpened(e);
                if(!initObjComponente()){
                    Bandera objBandera = new Bandera();
                    objBandera.addObserver((Observer) objParent);
                    objBandera.setEstado(Bandera.PROCESO_CANCELADO);                
                    objBandera.notificar();  
                    dispose();                    
                }
                objControllerTable = new ControlarTablaDistribucion(jTableDistribucion, jListComponentes, objComponenteDistribuidorParent);
                
                jComboBoxComponentes.setEnabled(false);
                crearTablaDistribucionGridBagConstraints();
                cargarArbol();
                cargarGridBagConstraints(JDialogDistribuirComponentes.this.objComponenteParent.getObjGridBagConstraints());                
                
                if(!objComponenteDistribuidorParent.getComponentesDistribuidos().isEmpty()){
                    objControllerTable.loadRendererJListInluidos();
                }
                
                //if(objComponenteDistribuidorParent instanceof ComponenteDistribuidorContenedor){
                    jButtonAddComponenteGenerado.setEnabled(false);
                    jButtonDelComponentegenerado.setEnabled(false);
                //}
            }
        });
    }
    
    /** Creates new form JDialogDistribuirComponentes */
    public JDialogDistribuirComponentes(final JDialog objParent, Componente objComponenteParent) {
        super(objParent, true);
        initComponents();
        this.objParent = objParent;
        this.objComponenteParent = objComponenteParent;
        this.objComponenteDistribuidorParent = (ComponenteDistribuidor) this.objComponenteParent;
        this.objPlantillaCombo = new PlantillaCombo();
        this.objComponenteParent.setFinish(false);
        
        agregarWindowListener(objParent);
        this.inicializarControles();
        this.objNodoSeleccionado = null;
        this.objNodoAnteriorSeleccionado = this.objNodoSeleccionado;
    }
    
    private void inicializarControles(){
        //Inicializando limites para los spinner
        //Grupo Size
        this.jSpinnerSizeX.setModel(Utileria.getModelDefaultSpinnerIntegerGridBagConstraints());
        this.jSpinnerSizeY.setModel(Utileria.getModelDefaultSpinnerIntegerGridBagConstraints());        
    }
    

    private void actualizarEtiquetaSeleccionado() {
        String strInfo;
        boolean estadoPanelGridBagConstraints;
        if(!this.objComponenteSeleccionado.equals(this.objComponenteDistribuidorParent)){
            if(this.objComponenteDistribuidorParent.getComponentesDistribuidos().contains(this.objComponenteSeleccionado)){
                strInfo = "<html><font color = #669933><b>Componente " + 
                        this.objComponenteSeleccionado.getName() + 
                        " Incluido.</b></font></html>";                
                estadoPanelGridBagConstraints = true;
            }
            else{
                strInfo = "<html><font color = #993366><b>Componente " + 
                        this.objComponenteSeleccionado.getName() + 
                        " Sin Incluir.</b></font></html>";                
                estadoPanelGridBagConstraints = false;
            }
        }
        else{
            strInfo = "<html><font color = #336699><b>Contenedor " + 
                    this.objComponenteSeleccionado.getName() +  
                    " Seleccionado.</b></font></html>";                
            estadoPanelGridBagConstraints = false;
        }
        this.jLabelInfo.setText(strInfo);
        this.jPanelGridBagConstraints.setEnabled(estadoPanelGridBagConstraints);
    }
    
    private void configurarRaizComponenteContenedorAsistenteEspejo(){
        JComboBox objCombo = new JComboBox(this.objComponenteParentAsistenteEspejo.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteContenedorAsistenteLibre(){
        JComboBox objCombo = new JComboBox(this.objComponenteParentAsistenteLibre.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteIntegradorMetodo(){
        JComboBox objCombo = new JComboBox(this.objComponenteIntegradorMetodo.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteIntegradorSimple(){
        JComboBox objCombo = new JComboBox(this.objComponenteIntegradorSimple.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteIntegradorExtra(){
        JComboBox objCombo = new JComboBox(this.objComponenteIntegradorExtra.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }    
    
    private void configurarRaizComponenteGeneradorClase(){
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorClase.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }    
    
    private void configurarRaizComponenteGeneradorMetodoSetter() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorMetodoSetter.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteGeneradorMetodoGetter() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorMetodoGetter.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteGeneradorUnitario() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorUnitario.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }    
    
    private void configurarRaizComponenteGeneradorString() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorString.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteGeneradorEnum() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorEnum.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteGeneradorVinculador() {
        JComboBox objCombo = new JComboBox(this.objComponenteGeneradorVinculador.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }
    
    private void configurarRaizComponenteExtra() {
        JComboBox objCombo = new JComboBox(this.objComponenteExtra.getObjPlantillasComboDistribucionesGrupales().toArray());
        this.jComboBoxPlantillas.setModel(objCombo.getModel());
        MyListRendererJLabel objRenderer = new MyListRendererJLabel(Utileria.MODO_PLANTILLAS);
        this.jComboBoxPlantillas.setRenderer(objRenderer);
        this.jComboBoxPlantillas.setEnabled(true);
        JTable objTable = new JTable();        
        this.jTableDistribucion.setModel(objTable.getModel());
        //this.jTableDistribucion.setDefaultRenderer(String.class, new MyTableCellRendererDistribucionComponentes());
        this.jLabelElemento.setText("");
        this.jLabelElemento.setIcon(null);
        this.jComboBoxPlantillas.setSelectedIndex(this.idPlantilla);
    }   
    
    private boolean initObjComponente(){
        if(objComponenteParent instanceof ComponenteDistribuidorContenedorEspejo){
            return this.initComponenteContenedorAsistenteEspejo();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorContenedorLibre){
            this.jCheckBoxAddBibliotecaGlobal.setEnabled(true);
            return this.initComponenteContenedorAsistenteLibre();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorIntegradorMetodo){
            return this.initComponenteIntegradorMetodo();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorIntegradorSimple){
            return this.initComponenteIntegradorSimple();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorIntegradorExtra){
            return this.initComponenteIntegradorExtra();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            return this.initComponenteGeneradorClase();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoSetter){
            return this.initComponenteGeneradorMetodoSetter();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoGetter){
            return this.initComponenteGeneradorMetodoGetter();
        }        
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorEnum){
            return this.initComponenteGeneradorEnum();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorVinculador){
            return this.initComponenteGeneradorVinculador();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorUnitario){
            return this.initComponenteGeneradorUnitario();
        }        
        else if(objComponenteParent instanceof ComponenteDistribuidorGeneradorString){
            return this.initComponenteGeneradorString();
        }
        else if(objComponenteParent instanceof ComponenteDistribuidorExtra){            
            return this.initComponenteExtra();
        }
        else{
            UtilRender.msgAdvertencia("Este Componente tiene una Distribución Estandar Asociada." +
                    "Solo Puede Editar sus Paneles Contenidos.");
        }
        return false;
    }
    
    private boolean initComponenteContenedorAsistenteEspejo(){
        this.objComponenteParentAsistenteEspejo = (ComponenteDistribuidorContenedorEspejo) this.objComponenteParent;
        this.objPlantillaCombo = objComponenteParentAsistenteEspejo.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteContenedorAsistenteLibre(){
        this.objComponenteParentAsistenteLibre = (ComponenteDistribuidorContenedorLibre) this.objComponenteParent;
        this.objPlantillaCombo = objComponenteParentAsistenteLibre.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteIntegradorMetodo(){
        this.objComponenteIntegradorMetodo = (ComponenteDistribuidorIntegradorMetodo) this.objComponenteParent;
        this.getObjetoReflexion(objComponenteIntegradorMetodo);
        this.objPlantillaCombo = objComponenteIntegradorMetodo.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteIntegradorSimple(){
        this.objComponenteIntegradorSimple = (ComponenteDistribuidorIntegradorSimple) this.objComponenteParent;        
        this.objPlantillaCombo = objComponenteIntegradorSimple.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteIntegradorExtra(){
        this.objComponenteIntegradorExtra = (ComponenteDistribuidorIntegradorExtra) this.objComponenteParent;        
        this.objPlantillaCombo = objComponenteIntegradorExtra.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }    
    
    private boolean initComponenteGeneradorClase(){
        this.objComponenteGeneradorClase = (ComponenteDistribuidorGeneradorClaseCompleja) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorClase);
        this.objPlantillaCombo = objComponenteGeneradorClase.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteGeneradorMetodoSetter(){
        this.objComponenteGeneradorMetodoSetter = (ComponenteDistribuidorGeneradorMetodoSetter) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorMetodoSetter.getObjComponenteGeneradorParam());
        this.objPlantillaCombo = objComponenteGeneradorMetodoSetter.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }
    
    private boolean initComponenteGeneradorMetodoGetter(){
        this.objComponenteGeneradorMetodoGetter = (ComponenteDistribuidorGeneradorMetodoGetter) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorMetodoGetter.getObjComponenteGeneradorReturn());
        this.objPlantillaCombo = objComponenteGeneradorMetodoGetter.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = false;
        return true;
    }   
    
    private boolean initComponenteGeneradorUnitario(){
        this.objComponenteGeneradorUnitario = (ComponenteDistribuidorGeneradorUnitario) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorUnitario);
        this.objPlantillaCombo = objComponenteGeneradorUnitario.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = true;
        return true;
    }
    
    private boolean initComponenteGeneradorString(){
        this.objComponenteGeneradorString = (ComponenteDistribuidorGeneradorString) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorString);
        this.objPlantillaCombo = objComponenteGeneradorString.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = true;
        return true;
    }
    
    private boolean initComponenteGeneradorEnum(){
        this.objComponenteGeneradorEnum = (ComponenteDistribuidorGeneradorEnum) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorEnum);
        this.objPlantillaCombo = objComponenteGeneradorEnum.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = true;
        return true;
    }
    
    private boolean initComponenteGeneradorVinculador(){
        this.objComponenteGeneradorVinculador = (ComponenteDistribuidorGeneradorVinculador) this.objComponenteParent;
        this.getTipoDatoReflexion(objComponenteGeneradorVinculador);
        this.objPlantillaCombo = objComponenteGeneradorVinculador.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = true;
        return true;
    }
    
    private boolean initComponenteExtra(){
        this.objComponenteExtra = (ComponenteDistribuidorExtra) this.objComponenteParent;
        this.objPlantillaCombo = objComponenteExtra.getObjPlantillaComboDistribucionGrupalSeleccionada();
        this.idPlantilla = this.objPlantillaCombo.getId();
        this.incluirComponenteParent = true;
        return true;
    }
    
    private void cargarArbol() {
        DefaultMutableTreeNode objRaiz = GeneradorArbol.crearEstructura(objComponenteParent);
        JTree objArbol = new JTree(objRaiz);
        this.jTreeComponentes.setModel(objArbol.getModel());
        MyTreeCellRender objRender = new MyTreeCellRender(Utileria.ARBOL_COMPONENTE);
        this.jTreeComponentes.setCellRenderer(objRender); 
        this.jTreeComponentes.setExpandsSelectedPaths(true);
        //UtilAsistente.expandAll(jTreeComponentes, this.objComponenteDistribuidorParent);
        this.configurarRaizComponenteParent();        
        this.jTreeComponentes.setSelectionRow(0);
        this.jTreeComponentes.setDragEnabled(true);
        
    }
    
    private void getTipoDatoReflexion(ComponenteDistribuidorGenerador objComponenteGenerador) {       
        this.objTipoDato = objComponenteGenerador.getObjTipoDato();        
    }
    
    private void getObjetoReflexion(ComponenteDistribuidorIntegradorMetodo objComponenteIntegrador){
        this.objReflexion = objComponenteIntegrador.getObjReflexion();
    }
    
    private void configurarRaizComponenteParent(){
        if(this.objComponenteParent instanceof ComponenteDistribuidorContenedorEspejo){
            this.configurarRaizComponenteContenedorAsistenteEspejo();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorContenedorLibre){
            this.configurarRaizComponenteContenedorAsistenteLibre();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorMetodo){
            this.configurarRaizComponenteIntegradorMetodo();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorSimple){
            this.configurarRaizComponenteIntegradorSimple();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorExtra){
            this.configurarRaizComponenteIntegradorExtra();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            this.configurarRaizComponenteGeneradorClase();
        }        
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoSetter){
            this.configurarRaizComponenteGeneradorMetodoSetter();        
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoGetter){
            this.configurarRaizComponenteGeneradorMetodoGetter();        
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorUnitario){
            this.configurarRaizComponenteGeneradorUnitario();        
        }        
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorString){
            this.configurarRaizComponenteGeneradorString();        
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorEnum){
            this.configurarRaizComponenteGeneradorEnum();        
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorVinculador){
            this.configurarRaizComponenteGeneradorVinculador();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorExtra){
            this.configurarRaizComponenteExtra();        
        }
    }
    
    private void crearTablaDistribucionGridBagConstraints() {
        this.jTableGridBagConstraints.setModel(UtilAsistente.crearTablaPropiedadesDistribucionComponente(objComponenteParent));
        this.jTableGridBagConstraints.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        TableColumn objColumnValor = this.jTableGridBagConstraints.getColumn(MyTableModelProperties.NAME_COLUMN_VALUES);
        objColumnValor.setCellRenderer(new ColumnCellRendererDistribucionGridBagConstraintsColumnValues());
        objColumnValor.setCellEditor(new ColumnCellEditorDistribucionGridBagConstraintsColumnValue());                            
        this.jTableGridBagConstraints.setRowHeight(24);
        this.jTableGridBagConstraints.setEnabled(false);
    }
    
    private void crearTablaDistribucionGridBagConstraintsIncluido(Componente objComponenteIncluido) {
        this.jTableGridBagConstraintsIncluido.setModel(UtilAsistente.crearTablaPropiedadesDistribucionComponente(objComponenteIncluido));
        this.jTableGridBagConstraintsIncluido.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        TableColumn objColumnValor = this.jTableGridBagConstraintsIncluido.getColumn(MyTableModelProperties.NAME_COLUMN_VALUES);
        objColumnValor.setCellRenderer(new ColumnCellRendererDistribucionGridBagConstraintsColumnValues());
        objColumnValor.setCellEditor(new ColumnCellEditorDistribucionGridBagConstraintsColumnValue());                            
        this.jTableGridBagConstraintsIncluido.setRowHeight(24);
        this.jTableGridBagConstraintsIncluido.setEnabled(false);
    }    
    
    private void infoIconLabel(){
        String strMSG = "";
        Object obj = this.objSeleccionado;
        if(obj instanceof ObjetoTipoDatoReflexion){            
            ObjetoTipoDatoReflexion objTipo = (ObjetoTipoDatoReflexion) obj;
            if(objTipo.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_PRIMITIVO, strMSG);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eArray){
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_ARRAY, strMSG);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eEnumeracion){
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_ENUMERACION, strMSG);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eJDKRegistrado){
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_JDK_REGISTRADO, strMSG);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_CLASE, strMSG);
            }            
            else {
                strMSG = objTipo.getStrNombre();
                this.setIcono(Utileria.ICONO_JDK_NO_REGISTRADO, strMSG);
            }
        }
        else if(obj instanceof ComponenteDistribuidorContenedorEspejo){
            ComponenteDistribuidorContenedorEspejo objTempComponenteContenedor = (ComponenteDistribuidorContenedorEspejo) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteContenedor, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_CONTENEDOR_ASISTENTE_ESPEJO, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorContenedorLibre){
            ComponenteDistribuidorContenedorLibre objTempComponenteContenedor = (ComponenteDistribuidorContenedorLibre) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteContenedor, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_CONTENEDOR_ASISTENTE_LIBRE, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorIntegradorMetodo){
            ComponenteDistribuidorIntegradorMetodo objTempComponenteIntegrador = (ComponenteDistribuidorIntegradorMetodo) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteIntegrador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_INTEGRADOR_METODO, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorIntegradorSimple){
            ComponenteDistribuidorIntegradorSimple objTempComponenteIntegrador = (ComponenteDistribuidorIntegradorSimple) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteIntegrador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_INTEGRADOR_SIMPLE, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorIntegradorExtra){
            ComponenteDistribuidorIntegradorExtra objTempComponenteIntegrador = (ComponenteDistribuidorIntegradorExtra) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteIntegrador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_INTEGRADOR_EXTRA, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            ComponenteDistribuidorGeneradorClaseCompleja objTempComponenteGenerador = (ComponenteDistribuidorGeneradorClaseCompleja) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_CLASE_COMPLEJA, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorGeneradorMetodoSetter){
            ComponenteDistribuidorGeneradorMetodoSetter objTempComponenteGenerador = (ComponenteDistribuidorGeneradorMetodoSetter) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_METODO, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorGeneradorMetodoGetter){
            ComponenteDistribuidorGeneradorMetodoGetter objTempComponenteGenerador = (ComponenteDistribuidorGeneradorMetodoGetter) obj;
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_METODO, strMSG);            
        }        
        else if(obj instanceof ComponenteDistribuidorGeneradorUnitario){
            ComponenteDistribuidorGeneradorUnitario objTempComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_GENERADOR_UNITARIO, strMSG);            
        }        
        else if(obj instanceof ComponenteDistribuidorGeneradorString){
            ComponenteDistribuidorGeneradorString objTempComponenteGenerador = (ComponenteDistribuidorGeneradorString) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_GENERADOR_STRING, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorGeneradorEnum){
            ComponenteDistribuidorGeneradorEnum objTempComponenteGenerador = (ComponenteDistribuidorGeneradorEnum) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_ENUM, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorGeneradorVinculador){
            ComponenteDistribuidorGeneradorVinculador objTempComponenteGenerador = (ComponenteDistribuidorGeneradorVinculador) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerador, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_GENERADOR_VINCULADOR, strMSG);            
        }
        else if(obj instanceof ComponenteDistribuidorExtra){
            ComponenteDistribuidorExtra objTempComponenteExtra = (ComponenteDistribuidorExtra) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteExtra, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_EXTRA, strMSG);            
        }
        else if(obj instanceof ComponenteGeneradoSimple){
            ComponenteGeneradoSimple objTempComponenteGenerado = (ComponenteGeneradoSimple) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGenerado, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_GENERADO, strMSG);
        } 
        else if(obj instanceof ComponenteGeneradoInterno){
            ComponenteGeneradoInterno objTempComponenteGeneradoInterno = (ComponenteGeneradoInterno) obj;            
            strMSG = GeneradorComponentes.getValorPropiedad(objTempComponenteGeneradoInterno, "Name");
            this.setIcono(Utileria.ICONO_COMPONENTE_GENERADO, strMSG);
        } 
        else if(obj instanceof ObjetoReflexion){
            ObjetoReflexion objTempReflexion = (ObjetoReflexion) obj;
            if(objTempReflexion.getObj() instanceof Field){
                Field objField = (Field) objTempReflexion.getObj();
                this.setIcono(Utileria.ICONO_ATRIBUTO, objField.toGenericString());
            }
            else if(objTempReflexion.getObj() instanceof Method){
                Method objMethod = (Method) objTempReflexion.getObj();
                this.setIcono(Utileria.ICONO_METODO, objMethod.toGenericString());
            }
        }
        else if(obj instanceof Field){
            Field objField = (Field) obj;
            this.setIcono(Utileria.ICONO_ATRIBUTO, objField.toGenericString());
        }
        else if(obj instanceof Method){
            Method objMethod = (Method) obj;
            this.setIcono(Utileria.ICONO_METODO, objMethod.toGenericString());
        }
        else if (obj instanceof String) {
            String strClassPathComponente = (String) obj;
            this.setIcono(Utileria.ICONO_COMPONENTE, strClassPathComponente);            
        }
        else if(obj == null){
            this.setIcono(Utileria.ICONO_VACIO, strMSG);
            this.jLabelElemento.setText("");
            this.jLabelElemento.setIcon(null);
        }
    }
    
    private void setIcono(String key, String strMSG){
        key = key.replaceAll("16x16","32x32");
        ImageIcon icono = Utileria.leerRecursoImagen(key, 16);
        JLabel labelIcono = new JLabel(icono);
        this.jLabelElemento.setIcon(labelIcono.getIcon());
        this.jLabelElemento.setText("<html>" + strMSG + "</html>");
    }
    
    private void createPopupMenu() {        
        ControllerListenerPopupJTree objMyPopup = new ControllerListenerPopupJTree(this, jTreeComponentes, objSeleccionado);
        this.jTreeComponentes.addMouseListener(objMyPopup);                    
    }
    
    private boolean cargarGridBagConstraints(GridBagConstraints objGridBagConstraints){
        this.objGridBagConstraintsSeleccionada = objGridBagConstraints;
        if(objGridBagConstraints != null){
            
            this.jSpinnerSizeX.setValue(objGridBagConstraints.gridwidth);
            this.jSpinnerSizeY.setValue(objGridBagConstraints.gridheight);
            
            return true;
        }
        return false;
    }
    
    private void cambiarEstadoControlesGridBagConstraints(boolean estado){
        
        this.jSpinnerSizeX.setEnabled(estado);
        this.jSpinnerSizeY.setEnabled(estado);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBarGeneral = new javax.swing.JToolBar();
        jButtonAplicar = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        jButtonAddComponenteGenerado = new javax.swing.JButton();
        jButtonDelComponentegenerado = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        jLabelInfo = new javax.swing.JLabel();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        jButtonOpciones = new javax.swing.JButton();
        jSeparator5 = new javax.swing.JToolBar.Separator();
        jCheckBoxAddBibliotecaGlobal = new javax.swing.JCheckBox();
        jSeparator6 = new javax.swing.JToolBar.Separator();
        jButtonHelp = new javax.swing.JButton();
        jSplitPane1 = new javax.swing.JSplitPane();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabelElemento = new javax.swing.JLabel();
        jComboBoxComponentes = new javax.swing.JComboBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTreeComponentes = new javax.swing.JTree();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTableGridBagConstraints = new javax.swing.JTable();
        jTabbedPaneProcess = new javax.swing.JTabbedPane();
        jSplitPane2 = new javax.swing.JSplitPane();
        jTabbedPane5 = new javax.swing.JTabbedPane();
        jPanel5 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jComboBoxPlantillas = new javax.swing.JComboBox();
        jToolBarOpcionesDistribucion = new javax.swing.JToolBar();
        jButtonLimpiar = new javax.swing.JButton();
        jLabelComponenteSeleccionado = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTableDistribucion = new javax.swing.JTable();
        jSplitPane3 = new javax.swing.JSplitPane();
        jScrollPane4 = new javax.swing.JScrollPane();
        jListComponentes = new javax.swing.JList();
        jScrollPane5 = new javax.swing.JScrollPane();
        jTableGridBagConstraintsIncluido = new javax.swing.JTable();
        jTabbedPane3 = new javax.swing.JTabbedPane();
        jPanelGridBagConstraints = new javax.swing.JPanel();
        jPanelSize = new javax.swing.JPanel();
        jSpinnerSizeY = new javax.swing.JSpinner();
        jLabel7 = new javax.swing.JLabel();
        jSpinnerSizeX = new javax.swing.JSpinner();
        jLabel8 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(JDialogDistribuirComponentes.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setName("Form"); // NOI18N

        jToolBarGeneral.setFloatable(false);
        jToolBarGeneral.setRollover(true);
        jToolBarGeneral.setName("jToolBarGeneral"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance().getContext().getActionMap(JDialogDistribuirComponentes.class, this);
        jButtonAplicar.setAction(actionMap.get("aplicarCambios")); // NOI18N
        jButtonAplicar.setFocusable(false);
        jButtonAplicar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAplicar.setName("jButtonAplicar"); // NOI18N
        jButtonAplicar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jButtonAplicar);

        jSeparator2.setName("jSeparator2"); // NOI18N
        jToolBarGeneral.add(jSeparator2);

        jButtonAddComponenteGenerado.setAction(actionMap.get("agregarComponenteGenerado")); // NOI18N
        jButtonAddComponenteGenerado.setFocusable(false);
        jButtonAddComponenteGenerado.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAddComponenteGenerado.setName("jButtonAddComponenteGenerado"); // NOI18N
        jButtonAddComponenteGenerado.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jButtonAddComponenteGenerado);

        jButtonDelComponentegenerado.setAction(actionMap.get("borrarComponente")); // NOI18N
        jButtonDelComponentegenerado.setFocusable(false);
        jButtonDelComponentegenerado.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonDelComponentegenerado.setName("jButtonDelComponentegenerado"); // NOI18N
        jButtonDelComponentegenerado.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jButtonDelComponentegenerado);

        jSeparator3.setName("jSeparator3"); // NOI18N
        jToolBarGeneral.add(jSeparator3);

        jLabelInfo.setText(resourceMap.getString("jLabelInfo.text")); // NOI18N
        jLabelInfo.setName("jLabelInfo"); // NOI18N
        jToolBarGeneral.add(jLabelInfo);

        jSeparator4.setName("jSeparator4"); // NOI18N
        jToolBarGeneral.add(jSeparator4);

        jButtonOpciones.setAction(actionMap.get("setOpciones")); // NOI18N
        jButtonOpciones.setFocusable(false);
        jButtonOpciones.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonOpciones.setName("jButtonOpciones"); // NOI18N
        jButtonOpciones.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jButtonOpciones);

        jSeparator5.setName("jSeparator5"); // NOI18N
        jToolBarGeneral.add(jSeparator5);

        jCheckBoxAddBibliotecaGlobal.setAction(actionMap.get("incluirBiblioteca")); // NOI18N
        jCheckBoxAddBibliotecaGlobal.setFocusable(false);
        jCheckBoxAddBibliotecaGlobal.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jCheckBoxAddBibliotecaGlobal.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        jCheckBoxAddBibliotecaGlobal.setName("jCheckBoxAddBibliotecaGlobal"); // NOI18N
        jCheckBoxAddBibliotecaGlobal.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jCheckBoxAddBibliotecaGlobal);

        jSeparator6.setName("jSeparator6"); // NOI18N
        jToolBarGeneral.add(jSeparator6);

        jButtonHelp.setAction(actionMap.get("help")); // NOI18N
        jButtonHelp.setFocusable(false);
        jButtonHelp.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonHelp.setName("jButtonHelp"); // NOI18N
        jButtonHelp.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarGeneral.add(jButtonHelp);

        jSplitPane1.setDividerLocation(300);
        jSplitPane1.setName("jSplitPane1"); // NOI18N
        jSplitPane1.setOneTouchExpandable(true);

        jTabbedPane1.setName("jTabbedPane1"); // NOI18N

        jPanel1.setName("jPanel1"); // NOI18N

        jLabelElemento.setBackground(resourceMap.getColor("jLabelElemento.background")); // NOI18N
        jLabelElemento.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jLabelElemento.setName("jLabelElemento"); // NOI18N
        jLabelElemento.setOpaque(true);

        jComboBoxComponentes.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione un Componente" }));
        jComboBoxComponentes.setAction(actionMap.get("seleccionComponente")); // NOI18N
        jComboBoxComponentes.setName("jComboBoxComponentes"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTreeComponentes.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jTreeComponentes.setToolTipText(resourceMap.getString("jTreeComponentes.toolTipText")); // NOI18N
        jTreeComponentes.setAutoscrolls(true);
        jTreeComponentes.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jTreeComponentes.setName("jTreeComponentes"); // NOI18N
        jTreeComponentes.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTreeComponentesValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(jTreeComponentes);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE)
                    .addComponent(jComboBoxComponentes, javax.swing.GroupLayout.Alignment.LEADING, 0, 274, Short.MAX_VALUE)
                    .addComponent(jLabelElemento, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jComboBoxComponentes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabelElemento, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jTabbedPane1.addTab(resourceMap.getString("jPanel1.TabConstraints.tabTitle"), jPanel1); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        jTableGridBagConstraints.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Propiedad", "Valor"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableGridBagConstraints.setName("jTableGridBagConstraints"); // NOI18N
        jScrollPane2.setViewportView(jTableGridBagConstraints);

        jTabbedPane1.addTab("GridBagConstraints", jScrollPane2);

        jSplitPane1.setLeftComponent(jTabbedPane1);

        jTabbedPaneProcess.setName("jTabbedPaneProcess"); // NOI18N
        jTabbedPaneProcess.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jTabbedPaneProcessStateChanged(evt);
            }
        });

        jSplitPane2.setDividerLocation(90);
        jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
        jSplitPane2.setName("jSplitPane2"); // NOI18N

        jTabbedPane5.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
        jTabbedPane5.setName("jTabbedPane5"); // NOI18N

        jPanel5.setName("jPanel5"); // NOI18N

        jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
        jLabel3.setName("jLabel3"); // NOI18N

        jComboBoxPlantillas.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBoxPlantillas.setName("jComboBoxPlantillas"); // NOI18N
        jComboBoxPlantillas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxPlantillasActionPerformed(evt);
            }
        });

        jToolBarOpcionesDistribucion.setFloatable(false);
        jToolBarOpcionesDistribucion.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jToolBarOpcionesDistribucion.setRollover(true);
        jToolBarOpcionesDistribucion.setName("jToolBarOpcionesDistribucion"); // NOI18N

        jButtonLimpiar.setAction(actionMap.get("borrarDistribucion")); // NOI18N
        jButtonLimpiar.setFocusable(false);
        jButtonLimpiar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonLimpiar.setName("jButtonLimpiar"); // NOI18N
        jButtonLimpiar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBarOpcionesDistribucion.add(jButtonLimpiar);

        jLabelComponenteSeleccionado.setText(resourceMap.getString("jLabelComponenteSeleccionado.text")); // NOI18N
        jLabelComponenteSeleccionado.setName("jLabelComponenteSeleccionado"); // NOI18N

        jScrollPane3.setName("jScrollPane3"); // NOI18N

        jTableDistribucion.setAutoCreateRowSorter(true);
        jTableDistribucion.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4", "Título 5", "Título 6", "Título 7", "Título 8"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableDistribucion.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        jTableDistribucion.setColumnSelectionAllowed(true);
        jTableDistribucion.setName("jTableDistribucion"); // NOI18N
        jTableDistribucion.getTableHeader().setReorderingAllowed(false);
        jTableDistribucion.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableDistribucionMouseClicked(evt);
            }
        });
        jScrollPane3.setViewportView(jTableDistribucion);
        jTableDistribucion.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jTableDistribucion.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title0")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title1")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title2")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title3")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title4")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title5")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(6).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title6")); // NOI18N
        jTableDistribucion.getColumnModel().getColumn(7).setHeaderValue(resourceMap.getString("jTableDistribucion.columnModel.title7")); // NOI18N

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jComboBoxPlantillas, 0, 417, Short.MAX_VALUE))
                    .addComponent(jLabelComponenteSeleccionado, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jToolBarOpcionesDistribucion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel3)
                            .addComponent(jComboBoxPlantillas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 255, Short.MAX_VALUE))
                    .addComponent(jToolBarOpcionesDistribucion, javax.swing.GroupLayout.DEFAULT_SIZE, 292, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabelComponenteSeleccionado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jTabbedPane5.addTab(resourceMap.getString("jPanel5.TabConstraints.tabTitle"), jPanel5); // NOI18N

        jSplitPane3.setDividerLocation(240);
        jSplitPane3.setName("jSplitPane3"); // NOI18N

        jScrollPane4.setName("jScrollPane4"); // NOI18N

        jListComponentes.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "No se han Incluido Componentes" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jListComponentes.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jListComponentes.setName("jListComponentes"); // NOI18N
        jListComponentes.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                jListComponentesValueChanged(evt);
            }
        });
        jScrollPane4.setViewportView(jListComponentes);

        jSplitPane3.setLeftComponent(jScrollPane4);

        jScrollPane5.setName("jScrollPane5"); // NOI18N

        jTableGridBagConstraintsIncluido.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Propiedad", "Valor"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableGridBagConstraintsIncluido.setName("jTableGridBagConstraintsIncluido"); // NOI18N
        jScrollPane5.setViewportView(jTableGridBagConstraintsIncluido);

        jSplitPane3.setRightComponent(jScrollPane5);

        jTabbedPane5.addTab(resourceMap.getString("jSplitPane3.TabConstraints.tabTitle"), jSplitPane3); // NOI18N

        jSplitPane2.setRightComponent(jTabbedPane5);

        jTabbedPane3.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
        jTabbedPane3.setName("jTabbedPane3"); // NOI18N

        jPanelGridBagConstraints.setName("jPanelGridBagConstraints"); // NOI18N

        jPanelSize.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jPanelSize.border.title"), javax.swing.border.TitledBorder.RIGHT, javax.swing.border.TitledBorder.DEFAULT_POSITION)); // NOI18N
        jPanelSize.setFont(resourceMap.getFont("jPanelSize.font")); // NOI18N
        jPanelSize.setName("jPanelSize"); // NOI18N

        jSpinnerSizeY.setName("jSpinnerSizeY"); // NOI18N
        jSpinnerSizeY.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSpinnerSizeYStateChanged(evt);
            }
        });

        jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
        jLabel7.setName("jLabel7"); // NOI18N

        jSpinnerSizeX.setName("jSpinnerSizeX"); // NOI18N
        jSpinnerSizeX.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSpinnerSizeXStateChanged(evt);
            }
        });

        jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
        jLabel8.setName("jLabel8"); // NOI18N

        javax.swing.GroupLayout jPanelSizeLayout = new javax.swing.GroupLayout(jPanelSize);
        jPanelSize.setLayout(jPanelSizeLayout);
        jPanelSizeLayout.setHorizontalGroup(
            jPanelSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelSizeLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel7)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSpinnerSizeX, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSpinnerSizeY, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanelSizeLayout.setVerticalGroup(
            jPanelSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel7)
            .addComponent(jSpinnerSizeX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addComponent(jSpinnerSizeY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addComponent(jLabel8)
        );

        javax.swing.GroupLayout jPanelGridBagConstraintsLayout = new javax.swing.GroupLayout(jPanelGridBagConstraints);
        jPanelGridBagConstraints.setLayout(jPanelGridBagConstraintsLayout);
        jPanelGridBagConstraintsLayout.setHorizontalGroup(
            jPanelGridBagConstraintsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelGridBagConstraintsLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(175, Short.MAX_VALUE))
        );
        jPanelGridBagConstraintsLayout.setVerticalGroup(
            jPanelGridBagConstraintsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelGridBagConstraintsLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane3.addTab(resourceMap.getString("jPanelGridBagConstraints.TabConstraints.tabTitle"), jPanelGridBagConstraints); // NOI18N

        jSplitPane2.setLeftComponent(jTabbedPane3);

        jTabbedPaneProcess.addTab(resourceMap.getString("jSplitPane2.TabConstraints.tabTitle"), jSplitPane2); // NOI18N

        jSplitPane1.setRightComponent(jTabbedPaneProcess);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jToolBarGeneral, javax.swing.GroupLayout.DEFAULT_SIZE, 875, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 855, Short.MAX_VALUE)
                .addGap(10, 10, 10))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBarGeneral, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 479, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jTreeComponentesValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTreeComponentesValueChanged
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) (evt.getPath().getLastPathComponent());
        Object nodeInfo = node.getUserObject();
        this.objNodoAnteriorSeleccionado = this.objNodoSeleccionado;
        try {
            this.objNodoSeleccionado = (InformacionNodo) nodeInfo;
            if(this.objNodoSeleccionado.getObjElemento() == null){
                this.seleccion = Utileria.SELECCION_NO_VALIDA;                
                return;
            }
            this.objSeleccionado = this.objNodoSeleccionado.getObjElemento();
            if (node.isRoot()) {
                //El nodo seleccionado es la raiz del arbol                                
                cambiarEstadoControlesGridBagConstraints(false);
            } else if (node.isLeaf()) {
                //El nodo seleccionado es una hoja                                
                cambiarEstadoControlesGridBagConstraints(false);
            } else {
                //El nodo seleccionado es una rama           
                cambiarEstadoControlesGridBagConstraints((this.objSeleccionado instanceof Componente) ? true : false);
            }
            this.infoIconLabel();
            this.createPopupMenu();            
            this.cargarGridBagConstraintsComponenteSeleccionado();
        } catch (java.lang.ClassCastException ex) {
            Logger.getLogger(JDialogDistribuirComponentes.class.getName()).log(Level.SEVERE, null, ex);
            this.seleccion = Utileria.COMPONENTE_NO_VALIDO_SELECCIONADO;
        }
    }//GEN-LAST:event_jTreeComponentesValueChanged

    private void jComboBoxPlantillasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxPlantillasActionPerformed
        if(this.jComboBoxPlantillas.getSelectedIndex() >= 0){
            this.objPlantillaCombo = (PlantillaCombo) this.jComboBoxPlantillas.getSelectedItem();
            this.idPlantilla = this.objPlantillaCombo.getId();            
            this.actualizarSeleccionDePlantillaComponenteParent(); 
            this.cargarGridBagConstraintsComponenteSeleccionado();
            objControllerTable.loadRendererJListInluidos();
        }
    }//GEN-LAST:event_jComboBoxPlantillasActionPerformed

    private void jSpinnerSizeXStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSizeXStateChanged
        int valor = Integer.parseInt(String.valueOf(this.jSpinnerSizeX.getValue()));
        try{
            if(objGridBagConstraintsSeleccionada.gridwidth != valor){
                if(this.objControllerTable.actualizarDistribucionPropiedad(objComponenteSeleccionado, ControlarTablaDistribucion.UPDATE_SIZE_X, valor)){
                    System.out.println("Acualizado Tamaño Horizontal de " + objComponenteSeleccionado.getName() + " en: " + valor);
                }
            }
        }catch(java.lang.Exception ex){}
    }//GEN-LAST:event_jSpinnerSizeXStateChanged

    private void jSpinnerSizeYStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSizeYStateChanged
        int valor = Integer.parseInt(String.valueOf(this.jSpinnerSizeY.getValue()));
        try{
            if(objGridBagConstraintsSeleccionada.gridheight != valor){
                if(this.objControllerTable.actualizarDistribucionPropiedad(objComponenteSeleccionado, ControlarTablaDistribucion.UPDATE_SIZE_Y, valor)){
                    System.out.println("Acualizado Tamaño Vertical de " + objComponenteSeleccionado.getName() + " en: " + valor);
                }
            }
        }catch(java.lang.Exception ex){}
    }//GEN-LAST:event_jSpinnerSizeYStateChanged

    private void jTableDistribucionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableDistribucionMouseClicked
        try{
            if (evt.getButton() == MouseEvent.BUTTON1) {
                JTable target = (JTable)evt.getSource();
                int row = target.getSelectedRow();
                int column = target.getSelectedColumn();
                if(target.getValueAt(row, column) instanceof String){
                    String strName = (String) target.getValueAt(row, column);
                    if(!strName.isEmpty()){
                        this.objComponenteDistribuidorParent.setStrComponenteSeleccionadoEnTabla(strName);
                        TreePath objPathTree = this.jTreeComponentes.getNextMatch(strName, 0, Bias.Forward);              
                        if(!this.jTreeComponentes.getSelectionPath().equals(objPathTree)){
                            this.jTreeComponentes.setSelectionPath(objPathTree);
                        }
                        else{
                            this.cargarGridBagConstraintsComponenteSeleccionado();
                        }                    
                    }
                }
            }
        }catch(java.lang.NullPointerException ex){            
        }
    }//GEN-LAST:event_jTableDistribucionMouseClicked

    private void jListComponentesValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jListComponentesValueChanged
        if(this.jListComponentes.getSelectedIndex() >= 0){
            if(this.jListComponentes.getSelectedValue() instanceof Componente){
                Componente objComponenteIncluido = (Componente) this.jListComponentes.getSelectedValue();
                System.out.println("Componente Incluido Seleccionado: " + objComponenteIncluido.getName());
                crearTablaDistribucionGridBagConstraintsIncluido(objComponenteIncluido);
            }
        }
    }//GEN-LAST:event_jListComponentesValueChanged

    private void jTabbedPaneProcessStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPaneProcessStateChanged
        if(this.jTabbedPaneProcess.getSelectedIndex() == 1){
            //preview();
        }
    }//GEN-LAST:event_jTabbedPaneProcessStateChanged

    private void cargarGridBagConstraintsComponenteSeleccionado(){
        if(this.objSeleccionado instanceof Componente){
            this.objComponenteSeleccionado = (Componente) this.objSeleccionado;
            GridBagConstraints objGridBagConstraints = this.objComponenteSeleccionado.getGridBagConstraintsActiva();
            if(this.cargarGridBagConstraints(objGridBagConstraints)){
                actualizarEtiquetaSeleccionado();
                String strInfo = "<html>Componente: <b>" + objComponenteSeleccionado.getName() + "</b>" +
                        " Posición : (x = <b>" + 
                        objComponenteSeleccionado.getGridBagConstraintsActiva().gridx + "</b>, y = <b>" + 
                        objComponenteSeleccionado.getGridBagConstraintsActiva().gridy + "</b>) - Tamaño: " +
                        "(H = <b>" + objComponenteSeleccionado.getGridBagConstraintsActiva().gridwidth + "</b>, V = <b>" +
                        objComponenteSeleccionado.getGridBagConstraintsActiva().gridheight + "</b>)</html>";
                this.jLabelComponenteSeleccionado.setText(strInfo);
            }
        }
        else{
            String strInfo = "<html></html>";                
            boolean estadoPanelGridBagConstraints = false;
            this.jLabelInfo.setText(strInfo);
            this.jPanelGridBagConstraints.setEnabled(estadoPanelGridBagConstraints);
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteParent(){        
        if(this.objComponenteParent instanceof ComponenteDistribuidorExtra){
            this.actualizarSeleccionDePlantillaComponenteExtra();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorUnitario){
            this.actualizarSeleccionDePlantillaComponenteGeneradorUnitario();
        }                
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorString){
            this.actualizarSeleccionDePlantillaComponenteGeneradorString();
        }        
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorEnum){
            this.actualizarSeleccionDePlantillaComponenteGeneradorEnum();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorVinculador){
            this.actualizarSeleccionDePlantillaComponenteGeneradorVinculador();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoSetter){
            this.actualizarSeleccionDePlantillaComponenteGeneradorMetodoSetter();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorMetodoGetter){
            this.actualizarSeleccionDePlantillaComponenteGeneradorMetodoGetter();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            this.actualizarSeleccionDePlantillaComponenteGeneradorClase();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorMetodo){
            this.actualizarSeleccionDePlantillaComponenteIntegradorMetodo();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorSimple){
            this.actualizarSeleccionDePlantillaComponenteIntegradorSimple();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorIntegradorExtra){
            this.actualizarSeleccionDePlantillaComponenteIntegradorExtra();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorContenedorEspejo){
            this.actualizarSeleccionDePlantillaComponenteContenedorAsistenteEspejo();
        }
        else if(this.objComponenteParent instanceof ComponenteDistribuidorContenedorLibre){
            this.actualizarSeleccionDePlantillaComponenteContenedorAsistenteLibre();
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteExtra(){                
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteExtra.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteExtra.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorEnum(){                
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorEnum.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorEnum.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorVinculador(){                
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorVinculador.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorVinculador.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorUnitario(){                
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorUnitario.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorUnitario.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorString(){
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorString.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorString.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorMetodoSetter(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorMetodoSetter.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorMetodoSetter.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorMetodoGetter(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorMetodoGetter.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorMetodoGetter.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteGeneradorClase(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteGeneradorClase.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteGeneradorClase.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteIntegradorExtra(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteIntegradorExtra.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteIntegradorExtra.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }    
    
    private void actualizarSeleccionDePlantillaComponenteIntegradorMetodo(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteIntegradorMetodo.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteIntegradorMetodo.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteIntegradorSimple(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(objComponenteIntegradorSimple.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteIntegradorSimple.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteContenedorAsistenteEspejo(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(this.objComponenteParentAsistenteEspejo.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteParentAsistenteEspejo.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    private void actualizarSeleccionDePlantillaComponenteContenedorAsistenteLibre(){        
        if(!objPlantillaCombo.isManual()){
            this.jButtonLimpiar.setEnabled(false);
        }        
        if(this.objComponenteParentAsistenteLibre.actualizarPlantillaComboDistribucionGrupalSeleccionada(objPlantillaCombo)){
            if(objComponenteParentAsistenteLibre.ubicarComponentesEnTablaDistribucion()){
                //la plantilla ha sido implementada correctamente     
                this.objControllerTable.updateModel();
            }
        }   
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(JDialogDistribuirComponentes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JDialogDistribuirComponentes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JDialogDistribuirComponentes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JDialogDistribuirComponentes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the dialog */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                JDialogDistribuirComponentes dialog = new JDialogDistribuirComponentes(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    @Action
    public void aplicarCambios() {
        if(Utileria.matrizVacia(jTableDistribucion)){
            Utileria.mostrarMensaje(CuatroApp.getApplication().getMainFrame(), "Debe Crear una Distribución para el Componente y su Contenido.", "", JOptionPane.WARNING_MESSAGE);
            return;
        }
//        if(!Utileria.existeEnMatriz(jTableDistribucion, this.objComponenteDistribuidorParent.getName())){
//            Utileria.mostrarMensaje(CuatroApp.getApplication().getMainFrame(), "Debe Incluir la Distribución del Componente Principal.\nEs Requerida.", "", JOptionPane.WARNING_MESSAGE);                    
//            return;
//        }
        if(Utileria.confirmarOrden(CuatroApp.getApplication().getMainFrame(), "¿Aceptar los Cambios Relaizados?", "")){             
            Bandera objBandera = new Bandera();
            objBandera.addObserver((Observer) objParent);            
            objBandera.setEstado(Bandera.UPDATE_COMPONENTE);                            
            this.objComponenteDistribuidorParent.setFinish(true);
            this.objComponenteDistribuidorParent.setObjPlantillaComboDistribucionIndividualSeleccionada(objPlantillaCombo);            
            objBandera.setObj(this.objComponenteDistribuidorParent);            
            
            if(this.jCheckBoxAddBibliotecaGlobal.isSelected()){//incluir en la Biblioteca Global
                objBandera.add(Bandera.OPC_AGREGAR_COMPONENTE_BIBLIOTECA_GLOBAL, objComponenteDistribuidorParent);
            }            
            
            objBandera.notificar();  
            dispose();
        }
    }

    @Action
    public void borrarDistribucion() {
        if(UtilRender.msgConfirmar("¿Desea Eliminar la Distribución Actual?", this)){
            JTable objTable = new JTable();        
            this.jTableDistribucion.setModel(objTable.getModel());
        }
    }

    @Action
    public void borrarComponente() {
        if(this.objSeleccionado instanceof ComponenteGeneradoSimple){
            ComponenteGeneradoSimple objComponente = (ComponenteGeneradoSimple) objSeleccionado;
            if(UtilRender.msgConfirmar("¿Desea Eliminar El Componente Seleccionado?", this)){
                if(objComponenteDistribuidorParent.eliminarComponenteGeneradoIndependiente(objComponente)){
                    UtilRender.msgInformacion("El Componente ha sido Eliminado Correctamente.");
                    cargarArbol();
                    actualizarSeleccionDePlantillaComponenteParent(); 
                    cargarGridBagConstraintsComponenteSeleccionado();
                    objControllerTable.loadRendererJListInluidos();
                }
                else{
                    UtilRender.msgAdvertencia("No se Pudo Eliminar el Componente Seleccionado.");
                }
            }
        }
        else{
            UtilRender.msgAdvertencia("Solo puede Eliminar Componentes Agregados Manualmente.");
        }
    }

    public JList getjListComponentes() {
        return jListComponentes;
    }

    public JTable getjTableDistribucion() {
        return jTableDistribucion;
    }

    public ComponenteDistribuidor getObjComponenteDistribuidorParent() {
        return objComponenteDistribuidorParent;
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAddComponenteGenerado;
    private javax.swing.JButton jButtonAplicar;
    private javax.swing.JButton jButtonDelComponentegenerado;
    private javax.swing.JButton jButtonHelp;
    private javax.swing.JButton jButtonLimpiar;
    private javax.swing.JButton jButtonOpciones;
    private javax.swing.JCheckBox jCheckBoxAddBibliotecaGlobal;
    private javax.swing.JComboBox jComboBoxComponentes;
    private javax.swing.JComboBox jComboBoxPlantillas;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabelComponenteSeleccionado;
    private javax.swing.JLabel jLabelElemento;
    private javax.swing.JLabel jLabelInfo;
    private javax.swing.JList jListComponentes;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanelGridBagConstraints;
    private javax.swing.JPanel jPanelSize;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar.Separator jSeparator5;
    private javax.swing.JToolBar.Separator jSeparator6;
    private javax.swing.JSpinner jSpinnerSizeX;
    private javax.swing.JSpinner jSpinnerSizeY;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    private javax.swing.JSplitPane jSplitPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTabbedPane jTabbedPane3;
    private javax.swing.JTabbedPane jTabbedPane5;
    private javax.swing.JTabbedPane jTabbedPaneProcess;
    private javax.swing.JTable jTableDistribucion;
    private javax.swing.JTable jTableGridBagConstraints;
    private javax.swing.JTable jTableGridBagConstraintsIncluido;
    private javax.swing.JToolBar jToolBarGeneral;
    private javax.swing.JToolBar jToolBarOpcionesDistribucion;
    private javax.swing.JTree jTreeComponentes;
    // End of variables declaration//GEN-END:variables

    public void update(Observable o, Object arg) {
        if(o instanceof Bandera){
            Bandera objBandera = (Bandera) o;
            switch(objBandera.getEstado()){                
                case Bandera.PROPIEDADES_ACTUALIZADAS:
                    this.cargarArbol();
                    //this.preview();
                    break;       
                case Bandera.COMPONENTE_GENERADO_CREADO:
                    this.addComponente((ComponenteGeneradoSimple) objBandera.getObj());
                    break;
                case Bandera.UPDATE_PREFERENCES:
                    if(this.jTabbedPaneProcess.getSelectedIndex() == 1){
                        //this.preview();
                    }
                    break;
                case Bandera.UPDATE_COMPONENTE:
                    if(this.jTabbedPaneProcess.getSelectedIndex() == 1){
                        //this.preview();
                    }
                    break;
            }            
        }       
    }
    
    private void addComponente(ComponenteGeneradoSimple obj){                
        this.objComponenteDistribuidorParent.addComponenteGenerado(obj);        
        this.cargarArbol();
    }  

    @Action
    public void agregarComponenteGenerado() {
        JFrame mainFrame;        
        mainFrame = CuatroApp.getApplication().getMainFrame();                
        JDialogCrearComponenteManual objDialogCrearComponente = new JDialogCrearComponenteManual(this, Utileria.CREAR_COMPONENTE_GENERADO);
        objDialogCrearComponente.setLocationRelativeTo(mainFrame);                
        CuatroApp.getApplication().show(objDialogCrearComponente); 
    }

    @Action
    public void setOpciones() {
        JFrame mainFrame;
        mainFrame = CuatroApp.getApplication().getMainFrame();                
        JDialogPreferencias objDialogCrearComponente = new JDialogPreferencias(this);
        objDialogCrearComponente.setLocationRelativeTo(mainFrame);                
        CuatroApp.getApplication().show(objDialogCrearComponente);
    }

    @Action
    public void incluirBiblioteca() {
    }          

    @Action
    public void help() {
        UtilRender.openDialogHelp(JDialogDistribuirComponentes.class, getTitle());
    }
}

